MongoDB 是一種 NoSQL(非關聯式) 資料庫,用C++等語言撰寫而成,以解決應用程式開發社群中的大量現實問題。
專為可擴展性、高性能和高可用性而設計。
文件導向的資料庫:MongoDB 使用 BSON(Binary JSON)格式儲存其資料。不同於傳統的關聯型資料庫,它允許儲存的結構每一筆都不同。使得資料模型非常靈活,能夠輕鬆適應資料結構的變化。
擴展性:MongoDB 是為水平擴展設計的,它可以透過增加更多的伺服器來擴展其資料儲存空間,而不需要進行大量的前期架構設計。
高效能 :MongoDB 支援多種索引類型,包括單一欄位、複合(多個欄位)、多鍵(陣列)、地理空間、文字及雜湊。使得查詢非常有效率。另外它也對於讀寫操作進行了優化,能夠快速回應高負載的請求。
高可用性:MongoDB 的複製集功能支援資料的冗餘存儲和自動故障轉移。這確保了即使某些伺服器或資料中心失效,資料依然可以使用且系統也能持續運作。
Mongoose 是一個專為 Node.js 設計的 MongoDB 物件資料模型 (ODM) 函式庫。它提供了一個直覺且具有豐富特性的界面來操作 MongoDB 資料。
Mongoose 基於 MongoDB 的 Node.js 驅動程式建立,作為一個中間層提供了更高級的 API,讓開發者更方便在 Node.js 使用中使用 MongoDB。
簡而言之,MongoDB 是一個 NoSQL 資料庫,而 Mongoose 則是讓 Node.js 開發者更容易與 MongoDB 互動的工具。
npm install --save mongoose
npm install --save config
在專案底下建立一個config資料夾,並在該資料夾底下建立db.js
和default.json
default.json
(mongoURI等等要放入DB的連結)
{
"mongoURI": "",
}
db.js
//引入mongoose
const mongoose = require('mongoose');
const config = require('config');
const db = config.get('mongoURI');
const connectDB = async() =>{
try{
await mongoose.connect(db);
console.log('MongoDB Connected...');
} catch(err){
console.error(err.message);
//當失敗的時候立刻離開此程式
process.exit(1);
}
}
module.exports = connectDB;
設定完成後,到server.js
裡引入connectDB
方法並呼叫
//server.js
const express = require('express');
const mongoose = require('mongoose');
const connectDB = require('./config/db');
const app = express();
const port = 5000;
const postRoutes = require('./routes/posts-routes');
const bodyParser = require('body-parser');
//連接到資料庫
connectDB();
app.use(bodyParser.json());
app.use('/api/posts',postRoutes);
...(略)
先到mongoDB官網註冊,註冊並登入後會顯示以下頁面
點擊Create
相關設定選擇完後,點擊Create
跳到Quick Start後,先點擊Create User
接著在同一頁往下滑,點擊Finish
看到Cluster建立完成
點擊Connect,會出現彈窗,選擇VScode
將3.Connect to your MongoDB deployment.裡的string複製下來,等等要貼到後端專案裡。
將剛剛複製下來的string放到config/default.json
裡
{
"mongoURI": "(將你複製的string貼到這裡,<password>請自行輸入當初建立使用者設定的密碼)",
}
接著下指令啟動server
npm start
若看到我們剛剛設置的訊息就表示順利連接資料庫了
https://www.topcoder.com/thrive/articles/how-to-connect-mongodb-to-node-js-using-mongoose
https://www.mongodb.com/docs/drivers/node/current/quick-start/connect-to-mongodb/